7.5 分组之时间戳的分组
如果分组的数据时时间戳,同时也希望按指定的时间戳频率做分组,需要使用到pd.Grouper()函数配合, 该是专门用来生成分组依据的工具,可以按索引,按列,按计算结果,时序中的频率等内容为依据进行分组。结构如下:
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.05 分组之时间戳的分组.xlsx" )
print (df)
for t ,d in df.groupby(by=pd.Grouper( key = "日期" , freq = "QS" )):
# for t ,d in df.groupby(by=df.日期.dt.month):
print (t)
print (d)
print ("-----------------------------")
返回:
| 日期 | 产品 | 购买金额 | |
|---|---|---|---|
| 0 | 2023-03-30 08:00:00 | 93300.0 | 100 |
| 1 | 2023-05-27 08:00:00 | 93300.0 | 100 |
| 2 | 2023-11-30 08:00:00 | 93300.0 | 100 |
| .. | ... | ... | ... |
| 597 | 2023-06-02 09:10:41 | 12027024.0 | 100 |
| 598 | NaT | 12027026.0 | 10 |
[599 rows x 3 columns]
2023/1/1
| 日期 | 产品 | 购买金额 | |
|---|---|---|---|
| 28 | 2023-01-04 08:00:00 | 11153001.0 | 100 |
| 29 | 2023-01-04 08:00:00 | 11153001.0 | 100 |
| 146 | 2023-01-06 14:10:55 | 11403001.0 | 100 |
| .. | ... | ... | ... |
| 547 | 2023-03-23 08:00:00 | 12027020.0 | 100 |
| 0 | 2023-03-30 08:00:00 | 93300.0 | 100 |
| 223 | 2023-03-30 11:08:22 | 11603002.0 | 0 |
[92 rows x 3 columns]
-----------------------------
2023/4/1
| 日期 | 产品 | 购买金额 | |
|---|---|---|---|
| 225 | 2023-04-11 12:59:02 | 11603002.0 | 100 |
| 80 | 2023-04-13 11:06:42 | 11213001.0 | 100 |
| 356 | 2023-04-16 10:22:40 | 12023075.0 | 0 |
| .. | ... | ... | ... |
| 333 | 2023-06-27 08:00:00 | 12023025.0 | 100 |
| 140 | 2023-06-28 10:36:21 | 11363001.0 | 100 |
[224 rows x 3 columns]
-----------------------------
2023/7/1
| 日期 | 产品 | 购买金额 | |
|---|---|---|---|
| 381 | 2023-07-07 17:14:05 | 12027004.0 | 100 |
| 336 | 2023-07-10 19:47:54 | 12023025.0 | 10 |
| 337 | 2023-07-10 19:47:54 | 12023025.0 | 10 |
| .. | ... | ... | ... |
| 232 | 2023-09-26 17:32:06 | 11603006.0 | 100 |
| 382 | 2023-09-27 10:48:52 | 12027004.0 | 1 |
[87 rows x 3 columns]
-----------------------------
2023/10/1
| 日期 | 产品 | 购买金额 | |
|---|---|---|---|
| 236 | 2023-10-08 16:57:29 | 11613002.0 | 100 |
| 108 | 2023-10-10 13:58:56 | 11273012.0 | 100 |
| 455 | 2023-10-12 10:34:45 | 12027011.0 | 100 |
| 456 | 2023-10-12 10:34:45 | 12027011.0 | 100 |
| 563 | 2023-10-12 10:36:43 | 12027021.0 | 100 |
| .. | ... | ... | ... |
| 573 | 2023-12-30 11:25:23 | 12027021.0 | 70 |
| 468 | 2023-12-30 11:25:24 | 12027011.0 | 10 |
| 469 | 2023-12-30 11:25:24 | 12027011.0 | 90 |
| 574 | 2023-12-30 11:25:24 | 12027021.0 | 10 |
| 575 | 2023-12-30 11:25:24 | 12027021.0 | 90 |
[195 rows x 3 columns]
-----------------------------